home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE21 / CLINIC / TIMESET.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1997-02-27  |  1.4 KB  |  88 lines

  1. unit TimeSet;
  2.  
  3. interface
  4.  
  5. procedure SetTime(Time: TDateTime);
  6.  
  7. procedure SetDate(Date: TDateTime);
  8.  
  9. procedure SetNow(DateTime: TDateTime);
  10.  
  11. implementation
  12.  
  13. {$ifdef Windows}
  14.  
  15. uses
  16.   SysUtils;
  17.  
  18. procedure SetTime(Time: TDateTime);
  19. var
  20.   Hour, Min, Sec, HSec: Word;
  21. begin
  22.   DecodeTime(Time, Hour, Min, Sec, HSec);
  23.   HSec := HSec div 10;
  24.   asm
  25.     mov ch, Byte(Hour)
  26.     mov cl, Byte(Min)
  27.     mov dh, Byte(Sec)
  28.     mov dl, Byte(HSec)
  29.     mov ah, $2D
  30.     int $21
  31.   end;
  32. end;
  33.  
  34. procedure SetDate(Date: TDateTime);
  35. var
  36.   Year: Word;
  37.   Month, Day: Word;
  38. begin
  39.   DecodeDate(Date, Year, Month, Day);
  40.   asm
  41.     mov cx, Year
  42.     mov dh, Byte(Month)
  43.     mov dl, Byte(Day)
  44.     mov ah, $2B
  45.     int $21
  46.   end;
  47. end;
  48.  
  49. procedure SetNow(DateTime: TDateTime);
  50. begin
  51.   SetDate(Int(DateTime));
  52.   SetTime(Frac(DateTime))
  53. end;
  54.  
  55. {$else}
  56.  
  57. uses
  58.   SysUtils, Windows;
  59.  
  60. procedure SetNow(DateTime: TDateTime);
  61. var
  62.   ST: TSystemTime;
  63. begin
  64.   with ST do
  65.   begin
  66.     DecodeDate(DateTime, wYear, wMonth, wDay);
  67.     DecodeTime(DateTime, wHour, wMinute, wSecond, wMilliSeconds);
  68.   end;
  69.   if not SetLocalTime(ST) then
  70.     raise Exception.Create(SysErrorMessage(GetLastError));
  71. end;
  72.  
  73. procedure SetTime(Time: TDateTime);
  74. begin
  75.   //Use passed in time + system date
  76.   SetNow(Time + Date)
  77. end;
  78.  
  79. procedure SetDate(Date: TDateTime);
  80. begin
  81.   //Use passed in date + system time
  82.   SetNow(Time + Date)
  83. end;
  84.  
  85. {$endif}
  86.  
  87. end.
  88.